package utils;

import java.io.File;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

//import net.sourceforge.pinyin4j.PinyinHelper;
//import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
//import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
//import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
//import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import org.apache.commons.lang.StringUtils;

public class BQStringUtil extends StringUtils{
	/**
	 * 字符串转换，用于显示富文本编辑部分
	 * */
	public static String htmlspecialchars(String str) {
		str = str.replaceAll("&", "&amp;");
		str = str.replaceAll("<", "&lt;");
		str = str.replaceAll(">", "&gt;");
		str = str.replaceAll("\"", "&quot;");
		return str;
	}
	//获取字符串最后的.**   如字符串为/abc/edf/aaa.jpg  通过这个方法可以获取aaa.jpg  如果不符合条件，则返回空
	public static String getExt(String baseStr){
		String subOpStr = "";
		String ext = "";
		if(baseStr.contains("/")){
			subOpStr = StringUtils.substringAfterLast(baseStr, "/");
		}
		if(!subOpStr.equals("") && subOpStr.contains(".")){
			ext = subOpStr.substring(subOpStr.lastIndexOf("."));
		}
		return ext;
	}
	public static String getFirstUri(String baseStr){
		String subOpStr = "";
		String uri ="";
		String regEx = "/(.+)/(.+)$";  
		Pattern pat = Pattern.compile(regEx);  
		Matcher mat = pat.matcher(baseStr);  
		boolean rs = mat.find();
		if(rs){
			uri = StringUtils.substring(baseStr, 0, StringUtils.indexOf(baseStr, "/", 1)+1);
		}
		return uri;
	}
	/** 
	 * 获取随机字母数字组合 
	 *  
	 * @param length 
	 *            字符串长度 
	 * @return 
	 */  
	public static String getRandomCharAndNumr(Integer length) {  
	    String str = "";  
	    Random random = new Random();  
	    for (int i = 0; i < length; i++) {  
	        boolean b = random.nextBoolean();  
	        if (b) { // 字符串  
	            // int choice = random.nextBoolean() ? 65 : 97; 取得65大写字母还是97小写字母  
	            str += (char) (65 + random.nextInt(26));// 取得大写字母  
	        } else { // 数字  
	            str += String.valueOf(random.nextInt(10));  
	        }  
	    }  
	    return str;  
	}  
	public static String makeMD5(String password) {   
		MessageDigest md;   
		   try {   
		    // 生成一个MD5加密计算摘要   
		    md = MessageDigest.getInstance("MD5");   
		    // 计算md5函数   
		    md.update(password.getBytes());   
		    // digest()最后确定返回md5 hash值，返回值为8为字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符   
		    // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值   
		    String pwd = new BigInteger(1, md.digest()).toString(16);   
		    return pwd;   
		   } catch (Exception e) {   
		    e.printStackTrace();   
		   }   
		   return password;   
		}
	/**  
     * 获取汉字串拼音首字母，英文字符不变  
     * @param chinese 汉字串  
     * @return 汉语拼音首字母  
     */   
//    public static String getFirstSpell(String chinese) {   
//            StringBuffer pybf = new StringBuffer();   
//            char[] arr = chinese.toCharArray();   
//            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
//            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
//            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
//            for (int i = 0; i < arr.length; i++) {   
//                    if (arr[i] > 128) {   
//                            try {   
//                                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);   
//                                    if (temp != null) {   
//                                            pybf.append(temp[0].charAt(0));   
//                                    }   
//                            } catch (BadHanyuPinyinOutputFormatCombination e) {   
//                                    e.printStackTrace();   
//                            }   
//                    } else {   
//                            pybf.append(arr[i]);   
//                    }   
//            }   
//            return pybf.toString().replaceAll("\\W", "").trim();   
//    }   
  
    /**  
     * 获取汉字串拼音，英文字符不变  
     * @param chinese 汉字串  
     * @return 汉语拼音  
     */   
//    public static String getFullSpell(String chinese) {   
//            StringBuffer pybf = new StringBuffer();   
//            char[] arr = chinese.toCharArray();   
//            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
//            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
//            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
//            for (int i = 0; i < arr.length; i++) {   
//                    if (arr[i] > 128) {   
//                            try {   
//                                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);   
//                            } catch (BadHanyuPinyinOutputFormatCombination e) {   
//                                    e.printStackTrace();   
//                            }   
//                    } else {   
//                            pybf.append(arr[i]);   
//                    }   
//            }   
//            return pybf.toString();   
//    }  
// 
	public static void main(String[] args){
//		System.out.println(getFirstUri("yan/.asdf/dd"));
//		System.out.println(getFirstUri("/ks.sdf~`12!@#$%^&*()?><e@1237675^87jdf/wewe/wef"));
//		System.out.println(getRandomCharAndNumr(8));
//		System.out.println(makeMD5("12394M38TMN"));
//		System.out.println(getFullSpell("杨"));
//		System.out.println(makeMD5(makeMD5("yangsj")));
		
	}

}
